<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>父组件和子组件</title>
</head>
<body>
  <div id="app">
    <cpn2></cpn2>
    <!-- 若在Vue实例里也要使用子组件，子组件就必须在root组件里注册，否则无法识别子组件 -->
    <cpn1></cpn1>
  </div>

  <script src="../js/vue.js"></script>
  <script>
    // 1、创建第一个组件构造器（子组件）
    const cpnC1 = Vue.extend({
      template: `
        <div>
          <h2>我是子组件</h2>
          <p>我是内容，哈哈哈</p>
        </div>
      `
    }) 

    // 2、创建第二个组件构造器（父组件）
    const cpnC2 = Vue.extend({
      // 子组件注册后可在父组件的模板里使用子组件cpn1
      template: `
        <div>
          <h2>我是父组件</h2>
          <p>我是内容，呵呵呵</p>
          <cpn1></cpn1>
        </div>
      `,
      components: {
        // 子组件在父组件的components里注册
        cpn1: cpnC1
      }
    })

    // Vue其实也是root组件
    const app = new Vue({
      el: '#app',
      data: {
    
      },
      // Vue会先在root组件里找有没有注册子组件cpn1，没有的话再去全局组件找，全局组件没有的话就会报错
      components: {
      // 组件标签名：构造器对象
      // 父组件在Vue（root组件）里注册
        cpn2: cpnC2,

      // 若在Vue实例里也要使用子组件，子组件就必须在root组件里注册
        cpn1: cpnC1
      }
    })

  </script>
</body>
</html>